import request from './request'

/**
 * 获取职位列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getJobs(params) {
  return request({
    url: '/jobs',
    method: 'get',
    params
  })
}

/**
 * 搜索职位
 * @param {Object} params - 搜索参数 {keyword, categoryId, city, page, size}
 * @returns {Promise}
 */
export function searchJobs(params) {
  return request({
    url: '/jobs/search',
    method: 'get',
    params
  })
}

/**
 * 获取职位详情
 * @param {Number|String} id - 职位ID
 * @returns {Promise}
 */
export function getJobDetail(id) {
  return request({
    url: `/jobs/${id}`,
    method: 'get'
  })
}

/**
 * 申请职位
 * @param {Number|String} id - 职位ID
 * @param {Object} data - 申请参数 {resumeId}
 * @returns {Promise}
 */
export function applyJob(id, data) {
  return request({
    url: '/applications',
    method: 'post',
    data: {
      ...data,
      jobId: id
    }
  })
}

/**
 * 获取招聘者发布的职位
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getRecruiterJobs(params) {
  return request({
    url: '/jobs/user',
    method: 'get',
    params
  })
}

/**
 * 发布新职位
 * @param {Object} data - 职位信息
 * @returns {Promise}
 */
export function createJob(data) {
  return request({
    url: '/jobs',
    method: 'post',
    data
  })
}

/**
 * 更新职位
 * @param {Number|String} id - 职位ID
 * @param {Object} data - 职位信息
 * @returns {Promise}
 */
export function updateJob(id, data) {
  return request({
    url: `/jobs/${id}`,
    method: 'put',
    data
  })
}

/**
 * 获取职位相关的聊天记录
 * @param {Number|String} id - 职位ID
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getJobChatMessages(id, params) {
  return request({
    url: `/jobs/${id}/chat`,
    method: 'get',
    params
  })
}

/**
 * 发送职位相关的消息
 * @param {Number|String} id - 职位ID
 * @param {Object} data - 消息内容 {receiverId, content}
 * @returns {Promise}
 */
export function sendJobChatMessage(id, data) {
  return request({
    url: `/jobs/${id}/chat/send`,
    method: 'post',
    data
  })
}

/**
 * 更新职位状态
 * @param {Number|String} id - 职位ID
 * @param {Number} status - 职位状态 (0-草稿 1-已发布 2-已下线 3-未通过)
 * @returns {Promise}
 */
export function updateJobStatus(id, status) {
  console.log(`准备发送状态更新请求: 职位ID=${id}, 新状态=${status}`);
  return request({
    url: `/jobs/${id}/status`,
    method: 'put',
    params: { status },
    headers: {
      'Content-Type': 'application/json'
    }
  }).then(response => {
    console.log('状态更新响应:', response);
    return response;
  }).catch(error => {
    console.error('状态更新请求失败:', error);
    throw error;
  });
}

/**
 * 获取指定职位的简历投递列表
 * @param {Number|String} jobId - 职位ID
 * @param {Object} params - 分页参数
 * @returns {Promise}
 */
export function getJobApplications(jobId, params) {
  return request({
    url: `/applications/job/${jobId}`,
    method: 'get',
    params
  })
}

/**
 * 更新职位申请状态
 * @param {Number|String} id - 申请ID
 * @param {Number} status - 申请状态
 * @param {String} note - 备注
 * @returns {Promise}
 */
export function updateApplicationStatus(id, status, note) {
  return request({
    url: `/applications/status-update/${id}`,
    method: 'put',
    params: { status, note }
  })
}

/**
 * 检查用户是否已申请职位
 * @param {Number|String} jobId - 职位ID
 * @returns {Promise}
 */
export function checkJobApplied(jobId) {
  return request({
    url: '/applications/check',
    method: 'get',
    params: { jobId }
  })
}

/**
 * 获取简历详情
 * @param {Number|String} id - 简历ID
 * @returns {Promise}
 */
export function getResumeDetail(id) {
  return request({
    url: `/resumes/${id}`,
    method: 'get'
  })
}

/**
 * 创建面试邀请
 * @param {Object} data - 面试数据 {applicationId, interviewTime, location, type, interviewer, round, link}
 * @returns {Promise}
 */
export function createInterview(data) {
  console.log('创建面试邀请API调用，数据:', data);
  
  // 检查必要字段
  if (!data.applicationId) console.error('面试数据缺少applicationId');
  if (!data.interviewTime) console.error('面试数据缺少interviewTime');
  
  return request({
    url: '/interviews',
    method: 'post',
    data
  }).then(response => {
    console.log('创建面试邀请成功，响应:', response);
    return response;
  }).catch(error => {
    console.error('创建面试邀请失败，错误:', error);
    if (error.response && error.response.data) {
      console.error('错误详情:', error.response.data);
    }
    throw error;
  });
}

/**
 * 拒绝职位申请
 * @param {Object} data - 拒绝信息
 * @returns {Promise}
 */
export function rejectApplication(data) {
  return request({
    url: `/applications/status-update/${data.applicationId}`,
    method: 'put',
    params: {
      status: 4, // 拒绝状态码
      note: data.reason + (data.note ? `: ${data.note}` : '')
    }
  })
}

/**
 * 获取职位投递统计
 * @param {Number|String} jobId - 职位ID
 * @returns {Promise}
 */
export function getJobApplicationStats(jobId) {
  return request({
    url: `/applications/stats/${jobId}`,
    method: 'get'
  })
} 